﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Pixysoft.Framework.Logs
{
    class quickstart
    {
        /// <summary>
        /// 使用默认配置 操作日志
        /// </summary>
        public void start_001()
        {
            ILogger logger = Logger.GetLogger();
            logger.Info("hello, {0}.", "world");

            // 在bin/Debug/LOG 目录下会多出一个PIXYSOFT目录，包含PIXYSOFT.LOG文件，记录了日志

            //<log level="info" time="2011-05-02 18:35:02:359" id="a5314c10-0e73-4714-becc-00be200e0438" module="">
            //hello, world.
            //</log>
        }

        /// <summary>
        /// 使用代码配置 操作日志
        /// </summary>
        public void start_002()
        {
            ILogger logger = Logger.GetLogger("start_002", "module_001");
            logger.Info("hello2, {0}", "world");

            // bin/Debug/LOG/START_002/目录下多出 START_002.LOG, 内容为

            //<log level="info" time="2011-05-02 22:40:39:140" id="a4d90477-e780-4d52-987f-21356a7aa75e" module="module_001">
            //hello2, world
            //</log>

            // 即日志包含了module信息，方便日志分析进行模块提取
        }

        /// <summary>
        /// 读取配置文件初始化
        /// </summary>
        public void start_003()
        {
            LogConfiguration config = new LogConfiguration();

            //根配置 文件必须是pixysoft
            config.Filename = "pixysoft";
            config.LogCapacity = 1024;//配置文件大小，单位是字节
            config.LogLevel = LogLevel.INFO;//配置记录级别
            config.PrintToConsole = true;// 是否显示在console

            //子节点配置 默认使用根节点配置，如果子节点配置与根节点不一致，才使用子节点配置
            config.Settings.Add(new LoggerSetting());
            config.Settings[0].Filename = "pixysoft2";
            config.Settings[0].LogLevel = LogLevel.FATAL;

            Logger.Initialize(config);


            //使用日志

            Logger.GetLogger("pixysoft").Info("我们能看到这个日志");
            Logger.GetLogger("pixysoft2").Info("我们不能看到这个日志");//由于pixysoft2使用了子节点配置，因此info级别不会被记录
            Logger.GetLogger("pixysoft2").Fatal("我们能看到这个日志");
            Logger.GetLogger("pixysoft3").Debug("我们不能看到这个日志");//由于pixysoft3没有预先配置，因此使用了pixysoft的配置
            Logger.GetLogger("pixysoft3").Info("我们能看到这个日志");
        }

        /// <summary>
        /// 对日志文件进行解析
        /// </summary>
        public void start_004()
        {
            Logger.GetLogger().Info("hello");
            Console.WriteLine(Logger.GetLogger().GetRecentReport(1000 * 60 * 60, LogLevel.INFO).Serialize(true));

            //<report time="2011-05-02 23:07:50:437" id="N/A (recent format)" timespan="3600000" timefrom="2011-05-02 22:07:50:437" timeto="2011-05-02 23:07:50:437">
            //  <document>
            //    <log id="5b598fc6-8d59-4fa4-8348-7a34db1fa042" time="2011-05-02 23:06:17:484" level="INFO" filepath="xxxx\bin\Debug\log\">hello</log>
            //  </document>
            //</report>
        }


        public void start_005()
        {
            //获取指定ID的日志在+-1000毫秒范围内的日志文件， 用于日志搜索跟踪
            Logger.GetLogger().GetReport("5b598fc6-8d59-4fa4-8348-7a34db1fa042", 1000);
            //获取指定ID的日志项目
            Logger.GetLogger().GetRecord("5b598fc6-8d59-4fa4-8348-7a34db1fa042");
            //日志文件打包
            Logger.GetLogger().Backup();
        }
    }
}
